package com.shj.em.biz.prod.mapper;

import com.shj.em.biz.prod.entity.Effort;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.shj.em.biz.hr.entity.Emp;
import org.apache.ibatis.annotations.Mapper;
import com.baomidou.mybatisplus.plugins.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 员工工作时间表 Mapper 接口
 * </p>
 *
 * @author Shen Huang Jian
 * @since 2018-07-16
 */
@Mapper
public interface EffortMapper extends BaseMapper<Effort> {
    /**
     * 分页查询
     * @param page 分页信息
     * @return
     */
    List<Effort> queryEffortPage(Page<Effort> page, Map<String, Object> params);

    List<Effort> findEffortsByDeptOrderAndDt(@Param("deptId") Long deptId, @Param("orderId") Long orderId, @Param("workDt") String workDt);

    /**
     * 获得订单总的工作时间
     * @param yearBegin
     * @param yearEnd
     * @return
     */
    List<Effort> getOrderTotalEffort(@Param("yearBegin")String yearBegin, @Param("yearEnd")String yearEnd);

    List<Effort> getEmpTotalEffortPerMonth(@Param("yearBegin")String yearBegin, @Param("yearEnd")String yearEnd);

    /**
     * 获得按 员工，订单，月份 汇总的时间
     * @param yearBegin
     * @param yearEnd
     * @return
     */
    List<Effort> getEmpEffortPerOrder(@Param("yearBegin")String yearBegin, @Param("yearEnd")String yearEnd);

    List<Effort> getEmpEffortInYear(@Param("yearBegin")String yearBegin, @Param("yearEnd")String yearEnd);

    /**
     * 获得某段时间内一个员工在每个订单所花费的时间
     * @param begin
     * @param end
     * @param empId
     * @return
     */
    List<Effort> getEffortPerOrderOfEmp(@Param("begin") String begin, @Param("end") String end, @Param("empId") Long empId);

    /**
     * 某个员工在一段时间内，加工过 N 个订单，但是这 N 个订单是由多个人完成的，
     * 这里获得这个员工加工过的订单的总的工作时间（包含别人的），用于计算此员工
     * 所用的时间占总工时的百分比。
     * @param begin
     * @param end
     * @param empId
     * @return
     */
    List<Effort> getTotalWorkHourOfWorkOrders(@Param("begin") String begin, @Param("end") String end, @Param("empId") Long empId);

    /**
     * 从二部员工的工时记录中根据部门获取员工信息
     * @param begin
     * @param end
     * @param deptId
     * @return
     */
    List<Emp> getEmpsByDeptId(@Param("begin") String begin, @Param("end") String end, @Param("deptId") long deptId);

}
